package com.link2room.jetfire.facade;

import com.link2room.common.jpa.result.QueryResult;
import com.link2room.jetfire.dto.param.base.ReservationParamDto;
import com.link2room.jetfire.dto.param.inside.ReservationBaseInsideParamDto;
import com.link2room.jetfire.dto.param.inside.ReservationNmsStaInsideParamDto;
import com.link2room.jetfire.dto.param.inside.ReservationPayInsideParamDto;
import com.link2room.jetfire.dto.param.manager.ReservationManagerParamDto;
import com.link2room.jetfire.dto.result.base.ReservationBaseDto;
import com.link2room.jetfire.dto.result.base.ReservationDto;

/**
 * Created by sss on 2016/9/20.
 */
public interface IReservationFacadeService {
    ReservationBaseDto createReservation(ReservationParamDto reservationParamDto)throws Exception;

    /**
     * 更新订单确认状态
     * @param reservationNmsStaInsideParamDto
     * @throws Exception
     */
    void updateReservationNmsSta(ReservationNmsStaInsideParamDto reservationNmsStaInsideParamDto)throws Exception;

    void updateReservationBase(ReservationBaseInsideParamDto reservationBaseInsideParamDto)throws Exception;
    /**
     * 支付入账
     * @param reservationPayInsideParamDto
     * @throws Exception
     */
    void saveReservationPay(ReservationPayInsideParamDto reservationPayInsideParamDto)throws Exception;

    boolean savePayToPms(ReservationParamDto reservationParamDto)throws Exception;

    boolean updateReservationConfirmSta(ReservationParamDto reservationParamDto)throws Exception;

    void cancelReservationBase(ReservationParamDto reservationParamDto)throws Exception;

    ReservationDto findReservation(ReservationParamDto reservationParamDto) throws Exception;

    QueryResult<ReservationBaseDto> listReservations(ReservationManagerParamDto reservationParamDto)throws Exception;

    ReservationDto getReservation(ReservationParamDto reservationParamDto)throws Exception;

    void updateReservationAccountRefundSta(ReservationPayInsideParamDto reservationPayInsideParamDto)throws Exception;

}
